Los datos obtenidos de Kaggle tienen la informacion atmosferica de varios años en australia, datos en los que viene incluida desde la velocidad del viento hasta la temperatura, en total 23 variables recogidas durante varios años en distintas ciudades de australia con las que se obtienen un data set de 140.000 lineas aproximadamente.
Nuestro objetivo será predecir la lluvia del dia siguiente con los datos metereologicos del dia.
Con este dataset tan grande lo primero que nos planteamos fue centrarnos en dos cosas
-Utilizar una zona concreta de australia, sacada de la variable localizacion, de la cual elegimos 4 ciudades situadas en la costa sureste de Australia y -Utilizar la variable temporal de alguna forma, ya que considerabamos que tenia importancia pero no podiamos usar cada dia del año como un dato diferente, por lo que decidimos obtener apartir de la fecha la estacion del año en la que estaba cada linea,
Analizamos las variables individuales por separado con distintos graficos.
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -8.00 7.90 11.60 11.44 15.50 33.90 9
## $rango
## [1] -8.0 33.9
##
## $Varianza
## [1] 36.03961
##
## $Desciación_tipica
## [1] 6.0033
## [1] 9824
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -8.00 7.90 11.60 11.44 15.50 33.90 9
## $rango
## [1] 4.1 45.8
##
## $Varianza
## [1] 39.63946
##
## $Desciación_tipica
## [1] 6.295988
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.000 0.000 0.000 2.165 0.600 119.400 181
## $rango
## [1] 0.0 119.4
##
## $Varianza
## [1] 49.6903
##
## $Desciación_tipica
## [1] 7.049135
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.000 2.400 4.200 5.018 6.800 43.400 2493
## $rango
## [1] 0.0 43.4
##
## $Varianza
## [1] 13.31007
##
## $Desciación_tipica
## [1] 3.648297
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.000 2.000 6.000 4.694 7.000 9.000 4111
## $rango
## [1] 0 9
##
## $Varianza
## [1] 7.760572
##
## $Desciación_tipica
## [1] 2.78578
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.000 2.000 5.000 4.696 7.000 8.000 4298
## $rango
## [1] 0 8
##
## $Varianza
## [1] 6.968623
##
## $Desciación_tipica
## [1] 2.639815
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## -1.30 11.70 15.40 15.55 19.30 38.60 24
## $rango
## [1] -1.3 38.6
##
## $Varianza
## [1] 33.1232
##
## $Desciación_tipica
## [1] 5.755276
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 3.70 15.90 20.00 20.56 24.50 44.70 17
## $rango
## [1] 3.7 44.7
##
## $Varianza
## [1] 37.76001
##
## $Desciación_tipica
## [1] 6.144917
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.000 2.400 4.200 5.018 6.800 43.400 2493
## $rango
## [1] 0.0 43.4
##
## $Varianza
## [1] 13.31007
##
## $Desciación_tipica
## [1] 3.648297
##
## Variables sorted by number of missings:
## Variable Count
## x 0.2537663
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.00 4.10 7.90 7.15 10.20 13.90 2667
## $rango
## [1] 0.0 13.9
##
## $Varianza
## [1] 14.73037
##
## $Desciación_tipica
## [1] 3.838016
##
## Variables sorted by number of missings:
## Variable Count
## x 0.271478
## Length Class Mode
## 9824 character character
##
## Variables sorted by number of missings:
## Variable Count
## x 0.1124796
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 11.00 31.00 39.00 40.64 48.00 106.00 1104
##
## Variables sorted by number of missings:
## Variable Count
## x 0.1123779
## Length Class Mode
## 9824 character character
##
## Variables sorted by number of missings:
## Variable Count
## x 0.01842427
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.000 0.000 0.000 2.164 0.800 119.400
##
## Variables sorted by number of missings:
## Variable Count
## x 0
## Length Class Mode
## 9824 character character
##
## Variables sorted by number of missings:
## Variable Count
## x 0
## [1] 0
## RainTomorrow
## WindDir9am No Yes
## E 243 59
## ENE 206 55
## ESE 275 70
## N 848 355
## NE 350 112
## NNE 434 148
## NNW 416 137
## NW 355 114
## S 471 103
## SE 368 92
## SSE 407 103
## SSW 393 129
## SW 333 120
## W 1008 276
## WNW 585 141
## WSW 306 103
## WindDir9am
## RainTomorrow E ENE ESE N NE NNE NNW NW S SE SSE SSW SW
## No 243 206 275 848 350 434 416 355 471 368 407 393 333
## Yes 59 55 70 355 112 148 137 114 103 92 103 129 120
## WindDir9am
## RainTomorrow W WNW WSW
## No 1008 585 306
## Yes 276 141 103
## [1] 0
## RainTomorrow
## WindDir3pm No Yes
## E 561 108
## ENE 349 77
## ESE 349 102
## N 521 183
## NE 346 92
## NNE 210 89
## NNW 527 184
## NW 609 185
## S 558 184
## SE 295 91
## SSE 477 135
## SSW 321 171
## SW 480 124
## W 480 147
## WNW 683 147
## WSW 638 172
## WindDir3pm E ENE ESE N NE NNE NNW NW S SE SSE SSW SW W WNW WSW
## RainTomorrow
## No 561 349 349 521 346 210 527 609 558 295 477 321 480 480 683 638
## Yes 108 77 102 183 92 89 184 185 184 91 135 171 124 147 147 172
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.00 7.00 11.00 13.27 19.00 63.00 207
## $rango
## [1] NA NA
##
## $Varianza
## [1] NA
##
## $Desciación_tipica
## [1] NA
## [1] 9824
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 0.00 13.00 19.00 18.82 24.00 65.00 199
## $rango
## [1] NA NA
##
## $Varianza
## [1] NA
##
## $Desciación_tipica
## [1] NA
## [1] 9824
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 5.00 56.00 68.00 67.22 80.00 100.00 71
## $rango
## [1] NA NA
##
## $Varianza
## [1] NA
##
## $Desciación_tipica
## [1] NA
## [1] 9824
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 4.00 37.00 48.00 48.95 60.00 99.00 30
## $rango
## [1] NA NA
##
## $Varianza
## [1] NA
##
## $Desciación_tipica
## [1] NA
## [1] 9824
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 982.3 1013.6 1018.6 1018.5 1023.5 1040.2 201
## $rango
## [1] NA NA
##
## $Varianza
## [1] NA
##
## $Desciación_tipica
## [1] NA
## [1] 9824
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's
## 985.5 1011.4 1016.3 1016.2 1021.1 1037.8 196
## $rango
## [1] NA NA
##
## $Varianza
## [1] NA
##
## $Desciación_tipica
## [1] NA
## [1] 9824
En esta parte haremos un analisis de las variables en comparacion con otras
Cuando hemos terminado el analisis de las variables y hemos estudiado la correlacion que hay entre ellas podemos imputar los datos faltantes utilizando el resto de variables que tenemos. aprovechandonos asi de las variables que mas relación tienen entre ellas.
Detección, tratamiento e imputación de datos faltantes Valores Faltantes Visualización de valores faltantes Variables con más valores faltantes: Sunshine, Evaporation, Cloud3pm, Cloud9am, Pressure3pm, Pressure9am
##
## Variables sorted by number of missings:
## Variable Count
## Rainfall 0.0184242671
## Temp9am 0.0024429967
## Temp3pm 0.0017304560
## MinTemp 0.0009161238
## MaxTemp 0.0008143322
## Location 0.0000000000
##
## Missings in variables:
## Variable Count
## MinTemp 9
## MaxTemp 8
## Rainfall 181
## Temp9am 24
## Temp3pm 17
##
## Variables sorted by number of missings:
## Variable Count
## Cloud3pm 0.437500
## Cloud9am 0.418465
Variables Temp9am & Temp3pm: método: imputación simple: KNN Posible imputación simple mediante un algoritmo de clustering k-NN (con la función VIM:kNN) Parece que tiene sentido:
###Comprobaciones:
Variables MinTemp & MaxTemp: método: imputación simple: KNN
###Comprobaciones:
Variables Humidity9am & Rainfall: método: imputación simple: KNN
###Comprobaciones:
## Date Season Location MinTemp MaxTemp
## 0 0 0 0 0
## Rainfall Evaporation Sunshine WindGustDir WindGustSpeed
## 0 2493 2667 1105 1104
## WindDir9am WindDir3pm WindSpeed9am WindSpeed3pm Humidity9am
## 709 229 207 199 0
## Humidity3pm Pressure9am Pressure3pm Cloud9am Cloud3pm
## 30 201 196 4111 4298
## Temp9am Temp3pm RainToday RISK_MM RainTomorrow
## 0 0 181 0 0
## Temp9am_imp Temp3pm_imp MaxTemp_imp MinTemp_imp Humidity9am_imp
## 0 0 0 0 0
## Rainfall_imp
## 0
Aplicamos el mismo método para los nules de test. Para ello hay que imputarlos junto con el dataframe de train.
Transformaciones de variables cuantitativas La única que no parece seguir una distribución normal es la variable RainFall No se le puede aplicar logaritmos porque hay nulos. Resto de variables: siguen distribución normal
## [1] 1228 26
## [1] 9824 26
## [,1]
## Date 0.0000000
## Season 0.0000000
## Location 0.0000000
## MinTemp 0.0000000
## MaxTemp 0.0000000
## Rainfall 0.0000000
## Evaporation 0.0000000
## Sunshine 27.1478013
## WindGustDir 11.2479642
## WindGustSpeed 0.3664495
## WindDir9am 7.2170195
## WindDir3pm 2.3310261
## WindSpeed9am 2.1070847
## WindSpeed3pm 2.0256515
## Humidity9am 0.0000000
## Humidity3pm 0.3053746
## Pressure9am 2.0460098
## Pressure3pm 1.9951140
## Cloud9am 41.8464984
## Cloud3pm 43.7500000
## Temp9am 0.0000000
## Temp3pm 0.0000000
## RainToday 0.0000000
## RISK_MM 0.0000000
## RainTomorrow 0.0000000
## LogRainfall 0.0000000
El modelo utilizado es una regresion lineal, sacamos los valores de la recta para cada variable mediante lasso
###Estandarización:
## [1] 456 47
## [1] 3808 47
## [1] "(Intercept)" "MaxTemp" "Sunshine" "WindGustSpeed"
## [5] "WindDir9amN" "WindDir3pmENE" "WindDir3pmNNW" "WindDir3pmNW"
## [9] "WindDir3pmSSW" "WindDir3pmW" "Humidity3pm" "Pressure3pm"
## [13] "Cloud3pm" "RainToday" "RISK_MM" "Season_spring"
## [17] "WindGustDir_NNW" "WindGustDir_ENE"
##
## Call:
## glm(formula = RainTomorrow ~ ., family = binomial, data = new_train)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -2.4483 -0.6124 -0.3361 -0.1332 2.9795
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.49294 0.15475 -22.571 < 2e-16 ***
## MaxTemp 0.17552 0.05679 3.091 0.002 **
## RainToday 0.63281 0.10045 6.300 2.98e-10 ***
## WindGustSpeed 0.45867 0.05463 8.396 < 2e-16 ***
## Humidity3pm 1.01841 0.06392 15.933 < 2e-16 ***
## Pressure3pm -0.32633 0.05310 -6.145 7.99e-10 ***
## Cloud3pm 0.29335 0.02560 11.459 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 4164.7 on 3807 degrees of freedom
## Residual deviance: 2938.0 on 3801 degrees of freedom
## AIC: 2952
##
## Number of Fisher Scoring iterations: 5
## Confusion Matrix and Statistics
##
##
## glm_test 0 1
## 0 318 50
## 1 36 52
##
## Accuracy : 0.8114
## 95% CI : (0.7724, 0.8463)
## No Information Rate : 0.7763
## P-Value [Acc > NIR] : 0.03879
##
## Kappa : 0.4291
##
## Mcnemar's Test P-Value : 0.16097
##
## Sensitivity : 0.5098
## Specificity : 0.8983
## Pos Pred Value : 0.5909
## Neg Pred Value : 0.8641
## Prevalence : 0.2237
## Detection Rate : 0.1140
## Detection Prevalence : 0.1930
## Balanced Accuracy : 0.7041
##
## 'Positive' Class : 1
##